package BusinessQuestion;

/**
 * @author Liaorun
 */
public class PackingMachine {

    public static void main(String[] args) {
        System.out.println(minOps(new int[]{100, 0, 0, 0}));
    }

    public static int minOps(int[] arr) {

        if (arr == null || arr.length == 0) {
            return 0;
        }

        int size = arr.length;
        int sum = 0;

        for (int i : arr) {
            sum += i;
        }

        if (sum % size != 0) {
            return -1;
        }

        int avg = sum / size;
        // 左侧遍历部分的累加和
        int leftSum = 0;
        // 最大的瓶颈
        int ans = 0;

        for (int i = 0; i < arr.length; i++) {
            // 负 需要输入，正需要输出 = 实际数量 - 目标数量（洗衣机数量*平均值）
            int leftRest = leftSum - i * avg;

            int rightRest = (sum - leftSum - arr[i]) - (size - i - 1) * avg;

            if (leftRest < 0 && rightRest < 0) {
                // 左右两边都需要当前节点给衣服，轮数是数量和
                ans = Math.max(ans, Math.abs(leftRest) + Math.abs(rightRest));
            } else {
                // 有一边不缺衣服或者有多的，；轮数是绝对值较大的
                ans = Math.max(ans, Math.max(Math.abs(leftRest), Math.abs(rightRest)));
            }

            leftSum += arr[i];
        }

        return ans;
    }


}
